package main

import (
	"fmt"
	"strconv"
	"strings"
)

func main() {

	//1. len() 字符串长度
	//2. []rune(str)  字符串遍历，同时也处理中文问题
	str := "go语言"
	fmt.Println("strLen:", len(str))
	strAscii := "golang hello"
	fmt.Println("strAsciiLen:", len(strAscii))
	fmt.Println("strAsciiLen:", strAscii[:6])
	s := []rune(str)
	fmt.Println("runeStrLen:", len(s))
	for i:=0;i<len(s);i++{
		fmt.Printf("%c \n", s[i])
	}
	//3. strconv.Atoi(str)  字符串转整数
	n, _ := strconv.Atoi("12")
	fmt.Println(n)

	//4. strconv.Itoa(整数)  整数转字符串
	//5. []byte(str) 字符串转 []byte
	var bt = []byte("golang")
	fmt.Println(bt)

	//6. string([]byte{108, 97, 110, 103})  []byte转string
	var bt2str = string([]byte{108, 97, 110, 103})
	fmt.Println(bt2str)

	//7. strconv.FormatInt(十进制数，二/八/十六进制)  十进制转二/八/十六进制
	r := strconv.FormatInt(112, 2)
	fmt.Println(r)

	//8. strings.Contains(str, substr)  查找子串是否在指定字符串中
	//9. strings.Count(str, substr)  统计字符串中有几个指定的子串
	//10. strings.EqualFold(str)  不区分大小写的字符串比较
	//11. strings.Index(str, substr)  返回子串在字符串第一次出现的index值，没有返回-1
	//12. strings.LastIndex(str, subStr)  返回子串在字符串最后一次出现的index值，没有返回-1
	//13. strings.Replace(str, subStr, replaceStr, n) 将指定的subStr替换成replaceStr，n可以指定替换多少个，n为-1表示全部替换
	//strings.Fields(str)  用一个或多个空白符号来作为动态长度的分隔符将字符串分割成若干小块，并返回一个 slice，如果字符串只包含空白符号，则返回一个长度为 0 的 slice
	//14. strings.Split(str, splitStr)  将字符串str按指定的分割符splitStr进行分割，结果为数组
	strArr := strings.Split(str, "o")
	fmt.Println(strArr)
	//15. strings.ToLower(str)  将字符串str转为小写
	//16. strings.ToUpper(str)  将字符串str转为大写
	//17. strings.TrimSpace(str)  将字符串两边的空格去掉
	//18. strings.Trim(str, trimStr) 将字符串两边指定的trimStr字符去掉
	//19. strings.TrimLeft(str, trimStr)/strings.TrimRight(str, trimStr)  将字符串左边/右边指定的trimStr字符去掉
	//20. strings.HashPrefix(str, prefixStr)  判断字符串是否以指定的字符串prefixStr开头
	//21. strings.HashSuffix(str, suffixStr)  判断字符串是否以指定的字符串suffixStr结束
	// 22. string.Join(a []string, sep string)  将字符串切片连接为一个字符串，之间用sep来分隔。
	prefix := strings.HasPrefix(str, "g")
	fmt.Println(prefix)
	//23. strings.Repeat(s, count int) string  将字符串s重复count次并返回
	//24. strings.NewReader(str)  生成一个 `Reader` 并读取字符串中的内容，然后返回指向该 `Reader` 的指针
	repeatStr := "dafagdargsada"
	repeatCount := strings.Repeat(repeatStr, 3)
	fmt.Println(repeatCount)

	fieldStr := strings.Fields(repeatStr)
	fmt.Printf("%T, %v\n", fieldStr,  fieldStr)



	srcFile:="/home/shuang/test/a/gul.jpeg"
	index:=strings.LastIndex(srcFile, "/")
	dest:=srcFile[index+1:]
	fmt.Println(dest)

	sArr:=strings.Split(srcFile,"/")
	f:= sArr[len(sArr)-1]
	fmt.Println(f)

	var sl = []string{"a", "b", "c"}
	res := strings.Join(sl, "")
	fmt.Println(res)

}
